package cn.xiaoyu.su.controller;


import cn.xiaoyu.su.service.DomainService;
import cn.xiaoyu.su.util.JsonData;
import cn.xiaoyu.su.vo.DomainVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author ⼆当家⼩D
 * @since 2022-12-08
 */
@RestController
@RequestMapping("/api/domain/v1")
public class DomainController {

    @Autowired
    private DomainService domainService;

    @Autowired
    private RedisTemplate<Object,Object> redisTemplate;

    /**
     * 列举全部域名可用列表
     * @return
     */
    @GetMapping("list")
    public JsonData listAll() {

        List<DomainVO> domainVOList = domainService.listAll();

        return JsonData.buildSuccess(domainVOList);
    }

    //@GetMapping("test")
    //public JsonData test(@RequestParam(name = "code")String code,@RequestParam(name = "accountNo")Long accountNo) {
    //
    //    //key1是短链码，ARGV[1]是accountNo,ARGV[2]是过期时间
    //    //如果缓存没有短链码作为的key,就设置key-value为 code-accountNo,并设置过期时间为100s，返回1;
    //    //如果存在短链码作为的key，获取对应的value，如果value等于accountNo，返回2;
    //    //否则返回0
    //    String script = "if redis.call('EXISTS',KEYS[1])==0 then redis.call('set',KEYS[1],ARGV[1]);" +
    //            "redis.call('expire',KEYS[1],ARGV[2]); return 1; elseif redis.call('get',KEYS[1]) == ARGV[1] then return 2;" +
    //            " else return 0; end;";
    //
    //    Long result = redisTemplate.execute(new DefaultRedisScript<>(script,Long.class), Arrays.asList(code),accountNo,100);
    //    return JsonData.buildSuccess(result);
    //}
}

